<?php

    class ContractSofwareMaintLedgerController extends Controller
    {

        /**
         * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
         * using two-column layout. See 'protected/views/layouts/column2.php'.
         */
        public $layout = '//layouts/column2';

        /**
         * @return array action filters
         */

        /**
         * Displays a particular model.
         * @param integer $id the ID of the model to be displayed
         */
        public function actionView($id)
        {
            $this->render('view', array(
                'model' => $this->loadModel($id),
            ));
        }

        /**
         * Creates a new model.
         * If creation is successful, the browser will be redirected to the 'view' page.
         */
        public function actionCreate()
        {
            $model = new ContractSofwareMaintLedger;

            // Uncomment the following line if AJAX validation is needed
            // $this->performAjaxValidation($model);

            if (isset($_POST['ContractSofwareMaintLedger']))
            {
                $model->attributes = $_POST['ContractSofwareMaintLedger'];
                if ($model->save())
                    $this->redirect(array('view', 'id' => $model->id));
            }

            $this->render('create', array(
                'model' => $model,
            ));
        }

        /**
         * Updates a particular model.
         * If update is successful, the browser will be redirected to the 'view' page.
         * @param integer $id the ID of the model to be updated
         */
        public function actionUpdate($id)
        {
            $model = $this->loadModel($id);

            // Uncomment the following line if AJAX validation is needed
            // $this->performAjaxValidation($model);

            if (isset($_POST['']))
            {
                $model->attributes = $_POST[''];
                echo json_encode($model->save());
            }else
                echo json_encode(FALSE);
        }

        /**
         * Deletes a particular model.
         * If deletion is successful, the browser will be redirected to the 'admin' page.
         * @param integer $id the ID of the model to be deleted
         */
        public function actionDelete($id)
        {

            $model = $this->loadModel($id);
            $description = 'Software Platform:  '.$model->software_platform.' '.$model->software_product_id_1.' '.$model->software_id_2;
            $ledger = ContractLedger::model()->find('contractid=:contractid AND partno=:partno AND description=:description', array(
                'partno' => 'HIST2',
                'contractid' => $model->contractid,
                'description'=>$description
            ));
            if($ledger) $ledger->delete();
            $model->delete();
            
            
        }

        /**
         * Lists all models.
         */
        public function actionIndex()
        {
            $dataProvider = new CActiveDataProvider('ContractSofwareMaintLedger');
            $this->render('index', array(
                'dataProvider' => $dataProvider,
            ));
        }

        /**
         * Manages all models.
         */
        public function actionList($contractId, $query = NULL, $page = 1, $sort = NULL, $dir = NULL)
        {
            //we decrease $page by 1 because in Extjs first page is 1, but in our sql first page is 0;
            if ($page > 0)
                $page--;

            $criteria = new CDbCriteria();
            $order = CJSON::decode($sort);
            if ($sort != NULL)
            {
                $criteria->order = $order[0]['property'] . ' ' . $order[0]['direction'];
            }
            $criteria->addColumnCondition(array('contractid' => $contractId));
            $pages = new CActiveDataProvider('ContractSofwareMaintLedger', array(
                        'criteria' => $criteria,
                        'pagination' => array(
                            'currentPage' => $page,
                            'pageSize' => 20,
                        )
                    ));
            $rs = array();
            if (count($pages->getData()) > 0)
            {
                $rs['totalCount'] = count($pages->getData());
                foreach ($pages->getData() as $i => $item)
                {
                    $rs['data'][] = $item->getAttributes();
                }

                echo json_encode($rs);
            }
            Yii::app()->end();
        }

        /**
         * Returns the data model based on the primary key given in the GET variable.
         * If the data model is not found, an HTTP exception will be raised.
         * @param integer the ID of the model to be loaded
         */
        public function loadModel($id)
        {
            $model = ContractSofwareMaintLedger::model()->findByPk($id);
            if ($model === null)
                throw new CHttpException(404, 'The requested page does not exist.');
            return $model;
        }

        public function actiongetDescription($pid)
        {
            $model = SoftwareMaintRates::model()->findByPk($pid);
            echo json_encode($model->getAttributes());
        }

        public function actionsetDescription()
        {
            if (isset($_POST['data']['id']) && $_POST['data']['id'])
            {
                $id = intval($_POST['data']['id']);

                $model = ContractSofwareMaintLedger::model()->findByPk($id);

                $model->attributes = $_POST['data'];

                $model->save();
            }
            else
            {
                $model = new ContractSofwareMaintLedger();
                $model->attributes = $_POST['data'];
                $model->contractid = $_POST['contractId'];
                $model->validate();

                json_encode($model->save());
            }
            echo $model->id;
        }

        /**
         * Performs the AJAX validation.
         * @param CModel the model to be validated
         */
        protected function performAjaxValidation($model)
        {
            if (isset($_POST['ajax']) && $_POST['ajax'] === 'contract-sofware-maint-ledger-form')
            {
                echo CActiveForm::validate($model);
                Yii::app()->end();
            }
        }

    }

    